package abg.core.domain.db;

import abg.core.domain.chat.ChatContentType;
import abg.core.common.mybatis.config.FieldInsert;
import abg.core.common.mybatis.config.FieldSet;
import abg.core.common.mybatis.config.FieldUpdate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 聊天消息主体
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "chat_msg", onUpdate = FieldUpdate.class, onInsert = FieldInsert.class, onSet = FieldSet.class)
public class ChatMsg extends ZBEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    //消息内容
    private String content;

    //消息类型； TXT 文字； IMG 图片； AUDIO 语音； VIDEO 视频； URL 链接地址；
    private ChatContentType contentType;

    //数据发送时间，默认为当前时间
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendTime;

    //聊天类型；0私聊；1群聊；
    private String chatType;

    //发消息的人
    private String sendUserId;

    //是否为@消息；0不是；1是；默认0
    private String isAt;

    //@人员ID
    private String atUserIds;

    //阅读量
    private Long readCount;

    //    收消息的人
    private String receiveUserId;

    //    接收方是否已读
    private String receiveUserIsRead;

    //    消息对应的群
    private String groupId;
}
